package com.shigu.appVersion.utils;

import org.apache.commons.lang3.StringUtils;

/*
 * create by  过儿  2019-06-20
 * 版本比较
 */
public class AppVersionUtil {



    /**
     * @return 返回 int
     *          前者大于后者返回正数
     *          相等返回0
     *          小于返回负数
     *
     * @description 版本比较
     * @author 郭尔
     * @date 2019-06-20 9:45
     */
    public static int compareVersion(String v1,String v2){
        if (StringUtils.isBlank(v1) || StringUtils.isBlank(v2)) {
            return -1;
        }

        // 注意此处为正则匹配，不能用.
        String[] versionArray1 = v1.split("\\.");
        String[] versionArray2 =v2.split("\\.");
        int idx = 0;
        // 取数组最小长度值
        int minLength = Math.min(versionArray1.length, versionArray2.length);
        int diff = 0;
        // 先比较长度，再比较字符
        while (idx < minLength
                && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0
                && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {
            ++idx;
        }
        // 如果已经分出大小，则直接返回，如果未分出大小，则再比较位数，有子版本的为大
        diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
        return diff;
    }
}
